/*
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.bblocks.communityInfo.client;


import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

/**
 *商品实体父类.
 */
public abstract class AbstractProduct {
	
	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 639772483681855956L;

	/** 商品Id */
	protected Long prodId;
	
	/** 版本号 */
	protected Integer version;
	
	/** 商品条形码. */
	protected String modelId;
	
	/** 商家编码. */
	protected String partyCode;
	
	/** 商品名称. */
	protected String name;
	
	/** 产品原价，市场价. */
	protected Double price;
	
	/** 产品现价，客户最终价格. */
	protected Double cash;
	
	/** 代理价. */
	protected Double proxyPrice;
	
	/** 是否支持分销 **/
	protected int supportDist = 0;
	
	/** 分销佣金比例 **/
	protected Double distCommisRate;
	
	/** 运费. */
	protected Double carriage;
	
	/** 简称. */
	protected String brief;

	/** 是否在app端显示原价 0 不显示，1显示 */
	protected Integer isShow;

	/** PC端详细描述 */
	protected String content;
	
	/** 手机端详细描述 */
	protected String contentM;
	
	/** 用户查看数. */
	protected long views;
	
	/** 用户购买数量. */
	protected long buys;
	
	/** 评论数. */
	protected long comments;
	
	/** 评论总得分 **/
	protected int reviewScores = 0;
	
	/** 评论平均得分 **/
	protected int avgScores;
	
	/** The rec date. */
	protected Date recDate;
	
	/** 商品的小图片. */
	protected String smallPic;
	
	/** 是否使用小图片. */
	protected String useSmallPic;
	
	/** 商品图片. */
	protected String pic;
	
	/** 商品状态. */
	protected Integer status;
	
	/** 商品原状态. */
	protected Integer preStatus;
	
	/** 修改时间. */
	protected Date modifyDate;
	
	/** 用户Id. */
	protected String userId;
	
	/** 用户名称. */
	protected String userName;
	
	/** 开始时间，在商品为有时间段有效期. */
	protected Date startDate;
	
	/** 结束时间，在商品为有时间段有效期. */
	protected Date endDate;
	
	/**  库存. */
	protected Integer stocks;
	
	/** 商品预警库存. */
	protected Integer stocksArm;
	
	/** 商品类型，见ProductTypeEnum. */
	protected String prodType;
	
	/** 活动Id [秒杀活动ID]. */
	protected Integer acitveId;
	
	/** 关键字. */
	protected String keyWord;
	
	/**
	 * 参数属性列表
	 *  property id: property value id
	 */
	protected String parameter;
	
	/**
	 * 用户自定义的参数属性列表, key:value 格式
	 */
	protected String userParameter;
	
	/** 品牌Id. */
	protected Long brandId;
	
	/** 实际库存. */
	protected Integer actualStocks;
	
	/** 产品缩略图. */
	protected MultipartFile smallPicFile;
	
	/** 省份Id. */
	protected Integer provinceid;

	/** 城市Id. */
	protected Integer cityid;

	/** 地区Id. */
	protected Integer areaid;
	
	/** 评论数*/
	protected Integer commentNum;
	
	/** 物流体积(立方米) **/
	protected Double volume=0d;

	/** 物流重量(千克) **/
	protected Double weight=0d;
	
	/** 有没发票 **/
	protected int hasInvoice;
	
	/** 是否保修 **/
	protected int hasGuarantee;
	
	/** 售后服务ID **/
	protected Long afterSaleId;
	
	/** 库存计数方式，0：拍下减库存，1：付款减库存 **/
	protected int stockCounting;
	
	/**  退换货承诺 **/
	protected Integer rejectPromise;
	
	/** 服务保障 **/
	protected Integer serviceGuarantee;
	
	/** 商家ID **/
	protected  Long shopId;
	
	/** 商城 分类 **/
	protected Long categoryId;
	
	/** (商家小分类) 一级分类  **/
	protected Long shopFirstCatId;
	
	/** (商家小分类) 二级分类  **/
	protected Long shopSecondCatId;
	
	/** (商家小分类) 三级分类  **/
	protected Long shopThirdCatId;
	
	/** 货到付款; 0:普通商品 , 1:货到付款商品  **/
	protected int isSupportCod;
	
	/** seo的标题  **/
	private String metaTitle;
	
	/** seo的描述  **/
	private String metaDesc;
	
	/**审核意见**/
	private String auditOpinion;
	
	/**是否参加团购**/
	private int isGroup;	
	
	/** 运费模板ID **/
	protected Long transportId;

	/** 是否免运费 **/
	private Integer supportTransportFree;
	
	/** 是否免运费 ，参见TransportTypeEnum **/
	private Integer transportType;
	
	/** EMS运费  **/
	private Double emsTransFee;
	
	/** 快递运费  **/
	private Double expressTransFee;
	
	/** 邮件运费  **/
	private Double mailTransFee;
	
	/** 会员直接上级分佣比例  **/
	protected Double firstLevelRate;
	
	/** 会员上二级分佣比例  **/
	protected Double secondLevelRate;
	
	/** 会员上三级分佣比例  **/
	protected Double thirdLevelRate;
	
	/** 微信小程序码 */
	protected String wxAcode;

	/** 商品视频地址  */
    protected String proVideoUrl;

    /** 商品分组ID */
    private Long groupId;

	/**商家端微信小程序码*/
	protected String shopWxCode;

	/**商品默认销量 yinfc*/
	protected Long defaultSale;
	/**
	 * Gets the prod id.
	 * 
	 * @return the prod id
	 */

	public Long getProdId() {
		return prodId;
	}

	/**
	 * Sets the prod id.
	 * 
	 * @param prodId
	 *            the new prod id
	 */
	public void setProdId(Long prodId) {
		this.prodId = prodId;
	}

	/**
	 * Gets the model id.
	 * 
	 * @return the model id
	 */
	public String getModelId() {
		return modelId;
	}

	/**
	 * Sets the model id.
	 * 
	 * @param modelId
	 *            the new model id
	 */
	public void setModelId(String modelId) {
		this.modelId = modelId;
	}

	/**
	 * Gets the name.
	 * 
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * Sets the name.
	 * 
	 * @param name
	 *            the new name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * Gets the price.
	 * 
	 * @return the price
	 */
	public Double getPrice() {
		return price;
	}

	/**
	 * Sets the price.
	 * 
	 * @param price
	 *            the new price
	 */
	public void setPrice(Double price) {
		this.price = price;
	}

	/**
	 * Gets the cash.
	 * 
	 * @return the cash
	 */
	public Double getCash() {
		return cash;
	}

	/**
	 * Sets the cash.
	 * 
	 * @param cash
	 *            the new cash
	 */
	public void setCash(Double cash) {
		this.cash = cash;
	}

	/**
	 * Gets the proxy price.
	 * 
	 * @return the proxy price
	 */
	public Double getProxyPrice() {
		return proxyPrice;
	}

	/**
	 * Sets the proxy price.
	 * 
	 * @param proxyPrice
	 *            the new proxy price
	 */
	public void setProxyPrice(Double proxyPrice) {
		this.proxyPrice = proxyPrice;
	}

	/**
	 * Gets the carriage.
	 * 
	 * @return the carriage
	 */
	public Double getCarriage() {
		return carriage;
	}

	/**
	 * Sets the carriage.
	 * 
	 * @param carriage
	 *            the new carriage
	 */
	public void setCarriage(Double carriage) {
		this.carriage = carriage;
	}

	/**
	 * Gets the brief.
	 * 
	 * @return the brief
	 */
	public String getBrief() {
		return brief;
	}

	/**
	 * Sets the brief.
	 * 
	 * @param brief
	 *            the new brief
	 */
	public void setBrief(String brief) {
		this.brief = brief;
	}
	/**是否在app端显示原价*/
	public Integer getIsShow() {
		return isShow;
	}

	public void setIsShow(Integer isShow) {
		this.isShow = isShow;
	}

	/**
	 * Gets the content.
	 * 
	 * @return the content
	 */
	public String getContent() {
		return content;
	}

	/**
	 * Sets the content.
	 * 
	 * @param content
	 *            the new content
	 */
	public void setContent(String content) {
		this.content = content;
	}
	
	/**
	 * Gets the views.
	 * 
	 * @return the views
	 */
	public long getViews() {
		return views;
	}

	/**
	 * Sets the views.
	 * 
	 * @param views
	 *            the new views
	 */
	public void setViews(long views) {
		this.views = views;
	}

	/**
	 * Gets the buys.
	 * 
	 * @return the buys
	 */
	public long getBuys() {
		return buys;
	}

	/**
	 * Sets the buys.
	 * 
	 * @param buys
	 *            the new buys
	 */
	public void setBuys(long buys) {
		this.buys = buys;
	}

	/**
	 * Gets the rec date.
	 * 
	 * @return the rec date
	 */
	public Date getRecDate() {
		return recDate;
	}

	/**
	 * Sets the rec date.
	 * 
	 * @param recDate
	 *            the new rec date
	 */
	public void setRecDate(Date recDate) {
		this.recDate = recDate;
	}

	/**
	 * Gets the pic.
	 * 
	 * @return the pic
	 */
	public String getPic() {
		return pic;
	}

	/**
	 * Sets the pic.
	 * 
	 * @param pic
	 *            the new pic
	 */
	public void setPic(String pic) {
		this.pic = pic;
	}


	/**
	 * Gets the status.
	 * 
	 * @return the status
	 */
	public Integer getStatus() {
		return status;
	}

	/**
	 * Sets the status.
	 * 
	 * @param status
	 *            the new status
	 */
	public void setStatus(Integer status) {
		this.status = status;
	}

	/**
	 * Gets the modify date.
	 * 
	 * @return the modify date
	 */
	public Date getModifyDate() {
		return modifyDate;
	}

	/**
	 * Sets the modify date.
	 * 
	 * @param modifyDate
	 *            the new modify date
	 */
	public void setModifyDate(Date modifyDate) {
		this.modifyDate = modifyDate;
	}

	/**
	 * Gets the user id.
	 * 
	 * @return the user id
	 */
	public String getUserId() {
		return userId;
	}

	/**
	 * Sets the user id.
	 * 
	 * @param userId
	 *            the new user id
	 */
	public void setUserId(String userId) {
		this.userId = userId;
	}

	/**
	 * Gets the user name.
	 * 
	 * @return the user name
	 */
	public String getUserName() {
		return userName;
	}

	/**
	 * Sets the user name.
	 * 
	 * @param userName
	 *            the new user name
	 */
	public void setUserName(String userName) {
		this.userName = userName;
	}

	/**
	 * Gets the start date.
	 * 
	 * @return the start date
	 */
	public Date getStartDate() {
		return startDate;
	}

	/**
	 * Sets the start date.
	 * 
	 * @param startDate
	 *            the new start date
	 */
	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	/**
	 * Gets the end date.
	 * 
	 * @return the end date
	 */
	public Date getEndDate() {
		return endDate;
	}

	/**
	 * Sets the end date.
	 * 
	 * @param endDate
	 *            the new end date
	 */
	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	/**
	 * 得到虚拟库存.
	 * 
	 * @return the stocks
	 */
	public Integer getStocks() {
		return stocks == null ? 0: stocks;
	}

	/**
	 * Sets the stocks.
	 * 
	 * @param stocks
	 *            the new stocks
	 */
	public void setStocks(Integer stocks) {
		this.stocks = stocks;
	}

	/**
	 * Gets the prod type.
	 * 
	 * @return the prod type
	 */
	public String getProdType() {
		return prodType;
	}

	/**
	 * Sets the prod type.
	 * 
	 * @param prodType
	 *            the new prod type
	 */
	public void setProdType(String prodType) {
		this.prodType = prodType;
	}

	/**
	 * Gets the key word.
	 * 
	 * @return the key word
	 */
	public String getKeyWord() {
		return keyWord;
	}

	/**
	 * Sets the key word.
	 * 
	 * @param keyWord
	 *            the new key word
	 */
	public void setKeyWord(String keyWord) {
		this.keyWord = keyWord;
	}

	/**
	 * Gets the parameter.
	 * 
	 * @return the parameter
	 */
	public String getParameter() {
		return parameter;
	}

	/**
	 * Sets the parameter.
	 * 
	 * @param parameter
	 *            the new parameter
	 */
	public void setParameter(String parameter) {
		this.parameter = parameter;
	}
	
	public String getUserParameter() {
		return userParameter;
	}

	public void setUserParameter(String userParameter) {
		this.userParameter = userParameter;
	}


	/**
	 * Gets the brand id.
	 * 
	 * @return the brand id
	 */
	public Long getBrandId() {
		return brandId;
	}

	/**
	 * Sets the brand id.
	 * 
	 * @param brandId
	 *            the new brand id
	 */
	public void setBrandId(Long brandId) {
		this.brandId = brandId;
	}

	/**
	 * 得到实际库存，不能为空
	 * 
	 * @return the actual stocks
	 */
	public Integer getActualStocks() {
		return actualStocks == null ? 0 : actualStocks;
	}

	/**
	 * Sets the actual stocks.
	 * 
	 * @param actualStocks
	 *            the new actual stocks
	 */
	public void setActualStocks(Integer actualStocks) {
		this.actualStocks = actualStocks;
	}
	
	/* (non-Javadoc)
	 * @see com.legendshop.model.entity.BaseEntity#getId()
	 */
	public Long getId() {
		return prodId;
	}
	
	public void setId(Long id) {
		this.prodId = id;
	}

	/**
	 * Gets the small pic.
	 *
	 * @return the small pic
	 */
	public String getSmallPic() {
		return smallPic;
	}

	/**
	 * Sets the small pic.
	 *
	 * @param smallPic the new small pic
	 */
	public void setSmallPic(String smallPic) {
		this.smallPic = smallPic;
	}



	/**
	 * Gets the small pic file.
	 *
	 * @return the small pic file
	 */
	public MultipartFile getSmallPicFile() {
		return smallPicFile;
	}

	/**
	 * Sets the small pic file.
	 *
	 * @param smallPicFile the new small pic file
	 */
	public void setSmallPicFile(MultipartFile smallPicFile) {
		this.smallPicFile = smallPicFile;
	}

	/**
	 * Gets the use small pic.
	 *
	 * @return the use small pic
	 */
	public String getUseSmallPic() {
		return useSmallPic;
	}

	/**
	 * Sets the use small pic.
	 *
	 * @param useSmallPic the new use small pic
	 */
	public void setUseSmallPic(String useSmallPic) {
		this.useSmallPic = useSmallPic;
	}

	
	/**
	 * Gets the provinceid.
	 * 
	 * @return the provinceid
	 */
	public Integer getProvinceid() {
		return provinceid;
	}

	/**
	 * Sets the provinceid.
	 * 
	 * @param provinceid
	 *            the new provinceid
	 */
	public void setProvinceid(Integer provinceid) {
		this.provinceid = provinceid;
	}

	/**
	 * Gets the cityid.
	 * 
	 * @return the cityid
	 */
	public Integer getCityid() {
		return cityid;
	}

	/**
	 * Sets the cityid.
	 * 
	 * @param cityid
	 *            the new cityid
	 */
	public void setCityid(Integer cityid) {
		this.cityid = cityid;
	}

	/**
	 * Gets the areaid.
	 * 
	 * @return the areaid
	 */
	public Integer getAreaid() {
		return areaid;
	}

	/**
	 * Sets the areaid.
	 * 
	 * @param areaid
	 *            the new areaid
	 */
	public void setAreaid(Integer areaid) {
		this.areaid = areaid;
	}

	/**
	 * Gets the comment num.
	 *
	 * @return the comment num
	 */
	public Integer getCommentNum() {
		return commentNum;
	}

	/**
	 * Sets the comment num.
	 *
	 * @param commentNum the new comment num
	 */
	public void setCommentNum(Integer commentNum) {
		this.commentNum = commentNum;
	}

	/**
	 * 评论数
	 *
	 * @return the comments
	 */
	public long getComments() {
		return comments;
	}

	/**
	 * Sets the comments.
	 *
	 * @param comments the new comments
	 */
	public void setComments(long comments) {
		this.comments = comments;
	}
	
	public int getReviewScores() {
		return reviewScores;
	}

	public void setReviewScores(int reviewScores) {
		this.reviewScores = reviewScores;
	}

	public int getAvgScores() {
		return avgScores;
	}

	public void setAvgScores(int avgScores) {
		this.avgScores = avgScores;
	}

	public String getPartyCode() {
		return partyCode;
	}

	public void setPartyCode(String partyCode) {
		this.partyCode = partyCode;
	}

	public Double getVolume() {
		return volume;
	}

	public void setVolume(Double volume) {
		this.volume = volume;
	}

	public Double getWeight() {
		return weight;
	}

	public void setWeight(Double weight) {
		this.weight = weight;
	}

	public Long getTransportId() {
		return transportId;
	}

	public void setTransportId(Long transportd) {
		this.transportId = transportd;
	}

	public int getHasInvoice() {
		return hasInvoice;
	}

	public void setHasInvoice(int hasInvoice) {
		this.hasInvoice = hasInvoice;
	}

	public int getHasGuarantee() {
		return hasGuarantee;
	}

	public void setHasGuarantee(int hasGuarantee) {
		this.hasGuarantee = hasGuarantee;
	}

	public Long getAfterSaleId() {
		return afterSaleId;
	}

	public void setAfterSaleId(Long afterSaleId) {
		this.afterSaleId = afterSaleId;
	}

	public int getStockCounting() {
		return stockCounting;
	}

	public void setStockCounting(int stockCounting) {
		this.stockCounting = stockCounting;
	}

	public Integer getRejectPromise() {
		return rejectPromise;
	}

	public void setRejectPromise(Integer rejectPromise) {
		this.rejectPromise = rejectPromise;
	}

	public Integer getServiceGuarantee() {
		return serviceGuarantee;
	}

	public void setServiceGuarantee(Integer serviceGuarantee) {
		this.serviceGuarantee = serviceGuarantee;
	}

	public Long getShopId() {
		return shopId;
	}

	public void setShopId(Long shopId) {
		this.shopId = shopId;
	}

	public Long getShopFirstCatId() {
		return shopFirstCatId;
	}

	public void setShopFirstCatId(Long shopFirstCatId) {
		this.shopFirstCatId = shopFirstCatId;
	}

	public Long getShopSecondCatId() {
		return shopSecondCatId;
	}

	public void setShopSecondCatId(Long shopSecondCatId) {
		this.shopSecondCatId = shopSecondCatId;
	}

	public Long getShopThirdCatId() {
		return shopThirdCatId;
	}

	public void setShopThirdCatId(Long shopThirdCatId) {
		this.shopThirdCatId = shopThirdCatId;
	}

	public Long getCategoryId() {
		return categoryId;
	}

	public void setCategoryId(Long categoryId) {
		this.categoryId = categoryId;
	}

	public int getIsSupportCod() {
		return isSupportCod;
	}

	public void setIsSupportCod(int isSupportCod) {
		this.isSupportCod = isSupportCod;
	}

	public String getMetaTitle() {
		return metaTitle;
	}

	public void setMetaTitle(String metaTitle) {
		this.metaTitle = metaTitle;
	}

	public String getMetaDesc() {
		return metaDesc;
	}

	public void setMetaDesc(String metaDesc) {
		this.metaDesc = metaDesc;
	}


	public Integer getSupportTransportFree() {
		return supportTransportFree;
	}

	public void setSupportTransportFree(Integer supportTransportFree) {
		this.supportTransportFree = supportTransportFree;
	}


	public Integer getTransportType() {
		return transportType;
	}

	public void setTransportType(Integer transportType) {
		this.transportType = transportType;
	}


	public Double getEmsTransFee() {
		return emsTransFee;
	}

	public void setEmsTransFee(Double emsTransFee) {
		this.emsTransFee = emsTransFee;
	}


	public Double getExpressTransFee() {
		return expressTransFee;
	}

	public void setExpressTransFee(Double expressTransFee) {
		this.expressTransFee = expressTransFee;
	}


	public Double getMailTransFee() {
		return mailTransFee;
	}

	public void setMailTransFee(Double mailTransFee) {
		this.mailTransFee = mailTransFee;
	}


	public String getAuditOpinion() {
		return auditOpinion;
	}

	
	public void setAuditOpinion(String auditOpinion) {
		this.auditOpinion = auditOpinion;
	}
	
	

	public int getIsGroup() {
		return isGroup;
	}

	public void setIsGroup(int isGroup) {
		this.isGroup = isGroup;
	}


	public Integer getPreStatus() {
		return preStatus;
	}

	public void setPreStatus(Integer preStatus) {
		this.preStatus = preStatus;
	}


	public Integer getVersion() {
		return version;
	}

	public void setVersion(Integer version) {
		this.version = version;
	}


	public int getSupportDist() {
		return supportDist;
	}

	public void setSupportDist(int supportDist) {
		this.supportDist = supportDist;
	}

	public Double getDistCommisRate() {
		return distCommisRate;
	}

	public void setDistCommisRate(Double distCommisRate) {
		this.distCommisRate = distCommisRate;
	}

	public Integer getStocksArm() {
		return stocksArm;
	}

	public void setStocksArm(Integer stocksArm) {
		this.stocksArm = stocksArm;
	}

	public Integer getAcitveId() {
		return acitveId;
	}

	public String getContentM() {
		return contentM;
	}

	public void setContentM(String contentM) {
		this.contentM = contentM;
	}

	public Double getFirstLevelRate() {
		return firstLevelRate;
	}

	public void setFirstLevelRate(Double firstLevelRate) {
		this.firstLevelRate = firstLevelRate;
	}

	public Double getSecondLevelRate() {
		return secondLevelRate;
	}

	public void setSecondLevelRate(Double secondLevelRate) {
		this.secondLevelRate = secondLevelRate;
	}

	public Double getThirdLevelRate() {
		return thirdLevelRate;
	}

	public void setAcitveId(Integer acitveId) {
		this.acitveId = acitveId;
	}

	public void setThirdLevelRate(Double thirdLevelRate) {
		this.thirdLevelRate = thirdLevelRate;
	}

	public String getWxACode() {
		return wxAcode;
	}

	public void setWxACode(String wxAcode) {
		this.wxAcode = wxAcode;
	}

    public String getProVideoUrl() {
        return proVideoUrl;
    }

    public void setProVideoUrl(String proVideoUrl) {
        this.proVideoUrl = proVideoUrl;
    }

	public String getShopWxCode() {
		return shopWxCode;
	}

	public void setShopWxCode(String shopWxCode) {
		this.shopWxCode = shopWxCode;
	}

	public Long getGroupId() {
		return groupId;
	}

	public void setGroupId(Long groupId) {
		this.groupId = groupId;
	}

	public Long getDefaultSale() {
		return defaultSale;
	}

	public void setDefaultSale(Long defaultSale) {
		this.defaultSale = defaultSale;
	}
}
